//
//  CZHomeViewController.swift
//  swiftweibo
//
//  Created by Apple on 15/11/22.
//  Copyright © 2015年 tzw. All rights reserved.
//

import UIKit
// 管理cell的重用标识
enum CZStatusReuseIdentifier: String{
    case NormalCell = "NormalCell"
    case ForwarCell = "ForwarCell"
}
// 首页
class CZHomeViewController: CZBasicTableViewController {
    // MARK: - 属性方法
    var status: [CZStatus]?{
        didSet{
            tableView.reloadData()
        }
    }
    // 注册cell的标识 
//    private let ReuseIdentifier = "ReuseIdentifier"

    override func viewDidLoad() {
        super.viewDidLoad()
        // 首先判断用户是否已经登录
        if !userLogin {
            return
        }
       
        CZStatus.loadStatus { (status, error) -> () in
//            print("加载到微博数据：\(status)")
            if error != nil || status == nil{
                print("数据为空")
                return
            }
//            print("status\(status)")
            // 给属性赋值
            self.status = status
        }
        
        prepareTableView()

        // 创建导航栏按钮
        setupNav()
    }
    private func prepareTableView(){
        // 注册cell
        tableView.registerClass(CZStatusNormalCell.self, forCellReuseIdentifier: CZStatusReuseIdentifier.NormalCell.rawValue)
        tableView.registerClass(CZStatusForwardCell.self, forCellReuseIdentifier: CZStatusReuseIdentifier.ForwarCell.rawValue)
        // 取消分割线
        tableView.separatorStyle = UITableViewCellSeparatorStyle.None
        // 设置预估行高
        tableView.estimatedRowHeight = 300
        // 设置行高根据cell来自动确定
//        tableView.rowHeight = UITableViewAutomaticDimension
    }
    private func setupNav(){
        navigationItem.leftBarButtonItem = UIBarButtonItem(imageName: "navigationbar_friendsearch")
        navigationItem.rightBarButtonItem = UIBarButtonItem(imageName: "navigationbar_pop")
        // 设置标题view
        let homeTitle = CZUserAccount.loadUserAccount()?.screen_name ?? "iOS6"
        let homeTitleButton = CZHomeButton(title: homeTitle)
        navigationItem.titleView = homeTitleButton
        // 监听按钮的点击事件
        homeTitleButton.addTarget(self, action: "homeTitleButtonClick:", forControlEvents: UIControlEvents.TouchUpInside)
    }
    
    // 监听点击事件
     func homeTitleButtonClick(button: UIButton){
        // 判断当前的按钮的状态
        button.selected = !button.selected
        // 设置旋转图片
        UIView.animateWithDuration(0.25, animations: { () -> Void in
            button.imageView?.transform = button.selected ? CGAffineTransformMakeRotation(CGFloat(M_PI - 0.01)) : CGAffineTransformIdentity
            })
    }
    // MARK: tableView数据源方法
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return status?.count ?? 0
    }
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        
        let sta = status![indexPath.row]
        print("sta\(sta.cellId())")
        let cell = tableView.dequeueReusableCellWithIdentifier(sta.cellId()) as! CZStatusCell
//        cell.textLabel?.text = status![indexPath.row].text
        cell.status = sta

        return cell
    }
    // 返回对应cell的行高
    override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
        // 获取对应的模型
        let sta = status![indexPath.row]
        // 判断是否有缓存的行高
        if sta.rowHeight != nil{
//            print("从缓存中取行高...\(sta.rowHeight)")
            return sta.rowHeight!
        }
        // 获取cell，并计算行高并不会显示出来
        let cell = tableView.dequeueReusableCellWithIdentifier(sta.cellId()) as! CZStatusCell
        // 没有缓存则计算行高
        let rowHeight = cell.rowHeight(sta)
        
        // 缓存行高
        sta.rowHeight = rowHeight
        // 返回行高
//        print("计算好的行高\(rowHeight)")
        return rowHeight
        
    }
 }


